perm filename WEBALS.TEX[WEB,ALS] blob
sn#663220 filedate 1982-06-21 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 \input basic
C00004 00003 \magnify{1200}
C00015 ENDMK
C⊗;
\input basic
\font D=cmr7 at 14pt % for title only
\font E=cmtt at 15pt % likewise
\font L=cmsa10
\font t=cmtt \def\tt{\:t} % typewriter text
\font m=cmsc10 \def\sc{\:m} % small caps
\font b=cmr9 \def\mc{\:b} % medium caps for names like PASCAL
\font C←cmss8
\font P←cmsss8
\def\.#1{\hbox{\tt#1}}
\def\_{\hskip.06em\vbox{\hrule width.3em}} % underline in identifiers
\def\\#1{\hbox{\it#1\/\hskip.05em}} % italic type for identifiers
\def\{\hbox{\bf#1}} % boldface type for reserved words
\chcode'27=13 \def↔{\ifmmode{\mathrel{\char'444}}\else{\penalty999\ } }
% make ↔ tie two words together except in math mode
\def\TEX{T\hbox{\hskip-.1667em\lower.424ex\hbox{E}\hskip-.125em X}}
\def\PASCAL{{\mc PASCAL}}
\def\pb{\.{|...|}}
\def\section #1.{\penalty-50\vskip 12pt plus 3pt minus 3pt
\noindent{\bf #1.}\quad\!}
\def\yskip{\vskip 3pt plus 3pt minus 1pt}
\def\sp{\char'40 } % visible blank space in typewriter font
\def\bk{\char'134 } % backslash character in typewriter font
\def\lb{\char'173 } % left brace in typewriter font
\def\rb{\char'175 } % right brace in typewriter font
\def\ul{\char'32 } % underline character in typewriter font
\def\hang{\hangindent 4em\ \unskip}
\magnify{1200}
\output{\page}
\ctrline{The New \.{WEB} Programming System}
\vskip 20 pt
\ \.{WEB} is a new computer-programming system created by Donald E. Knuth that
combines the programming facility of \PASCAL\ with the documentation
capability of \TEX.
The \.{WEB} system allows one to prepare a single document that contains all
the information that is needed both to generate the desired \PASCAL\ program
and to produce a well-formatted document describing the program in as much
detail as the writer may desire. This greatly simplifies the task of
maintaining compatability between the program and its documentation. In
addition, \.{WEB} provides a relatively simple macro facility and it allows
the program to be written in a series of small easily understood modules.
The net effect is that it is actually easier to write and debug a program
in \.{WEB} than it would be to write the program directly in \PASCAL. The user
of \.{WEB} must, of course, be familiar with both \TEX\ and \PASCAL.
The \.{WEB} system consists of two special pre-compilers that are used to
process original source files written in \.{WEB}. These pre-processors
are, of course, also written in \.{WEB}. One of these pre-compilers, called
\.{TANGLE}, extracts and re\-arranges the necessary information to produce
a syntactically correct \PASCAL\ source file that may then be compiled
with the usual \PASCAL\ compiler.
The second pre-compiler, called \.{WEAVE}, uses the same original input
file and generates a \TEX\ input file that can then be used to produce the
desired hard-copy documentation. \.{WEAVE} takes care of typographic
details having to do with the use of indentation, italics, boldface, etc.,
and it supplies a table of contents, an index,and it does extensive cross indexing.
Special attention has been given to the problem of transportability of
program written in \.{WEB}. To this end, \.{TANGLE} and \.{WEAVE} will
each accept two input files (both written in \.{WEB}). One of these input
files will, of course, be the master \.{.WEB} input file (of \TEX82, for
example) which will usually be written so as to be as device independent
as possible. The second input file can then contain the detailed changed
that are needed to adapt the master file to your particular computer
system. This change file may
be written and debugged without altering the master \.{WEB} file. Once a
change file has been prepared, it may be used with new releases of a
master \.{WEB} file with little or no modification.
In the past, certain individuals have acted as \TEX\ Site Coordinators for
specific types of computers and operating systems and these individuals
have distributed modified versions (sometimes already compiled) of the
programs supplied by The Computer Science Department at Stanford. We
expect this procedure to be extended to \.{WEB} with the details to be
worked out at the forthcoming \.{TUG} meeting.
\ \.{WEB} is described in a hard-copy document called ``The \.{WEB} System
of Structured Documentation'' by Donald E. Knuth. The appendices in this
document, describing \.{TANGLE} and \.{WEAVE}, were prepared by using
\.{WEAVE} with the original source files and they demonstrate the results
that can be achieved using the \.{WEB} language.
\vfill
{\noindent Stanford University}
{\noindent June 21, 1982}
\end
Magnetic tapes are currently being supplied containing the following files:
\.{TANGLE.WEB}, \.{TANGLE.PAS}, \.{TANGLE.TEX}, \.{TANGLE.SUAI-CHANGES},
\.{WEAVE.WEB}, \.{WEAVE.PAS}, \.{WEAVE.TEX}, \.{WEAVE.SUAI-CHANGES},
\.{BASIC.TEX}, and \.{WEBHDR.TEX}.
\eject
\ctrline{To Bootstrap \.{TANGLE}}
\vskip 20 pt
\ctrline{If preliminary \.{TANGLE} is on system}
$$\vbox{\halign{#\quad\hfill⊗#\hfill\cr
1.⊗Copy \.{TANGLE.WEB} and \.{TANGLE.CH} from tape.\cr
2.⊗Modify \.{TANGLE.CH} to allow for your particular system dependencies.\cr
3.⊗Check \.{system dependencies} in index of hard-copy report for other places.\cr
4.⊗Copy \.{TANGLE.WEB} as \.{TTEM.WEB}.\cr
5.⊗Modify \.{TTEM.WEB}, replacing modules with those copied from \.{TANGLE.CH}.\cr
⊗note: \.{TANGLE.WEB} should not be modified.\cr
6.⊗Run old \.{TANGLE} on \.{TTEM.WEB} to produce \.{TTEM.PAS}.\cr
7.⊗Compile \.{TTEM.PAS}\cr
8.⊗Run \.{TTEM} on \.{TANGLE.WEB} and \.{TANGLE.CH} to produce \.{TTTEM.PAS}.\cr
9.⊗Compare \.{TTEM.PAS} with \.{TTTEM.PAS} and redo from 2. if different.\cr
10.⊗Rename all \.{TTEM.*} files to \.{TANGLE.*}, replacing old files.\cr}}$$
\vskip 20 pt
\ctrline{If preliminary \.{TANGLE} is not on system}
$$\vbox{\halign{#\quad\hfill⊗#\hfill\cr
1.⊗Copy \.{TANGLE.WEB} and \.{TANGLE.CH} from tape.\cr
2.⊗Modify \.{TANGLE.CH} to allow for your particular system dependencies.\cr
⊗note: \.{TANGLE.WEB} should not be modified.\cr
3.⊗Check \.{system dependencies} in index of hard-copy report for other places.\cr
4.⊗Copy \.{TANGLE.PAS} from tape as \.{TTEM.PAS}.\cr
5.⊗Hand modify \.{TTEM.PAS} to incorporate system changes.\cr
⊗if this is too difficult, get some one with a running \.{TANGLE} to help you.\cr
6.⊗Compile \.{TTEM.PAS}\cr
7.⊗Run \.{TTEM} on \.{TANGLE.WEB} and \.{TANGLE.CH} to produce \.{TTTEM.PAS}.\cr
8.⊗Compare \.{TTEM.PAS} with \.{TTTEM.PAS} and redo from 2. if different.\cr
9.⊗Rename all \.{TTEM.*} files to \.{TANGLE.*}, replacing old files.\cr}}$$
\vskip 20 pt
\ctrline{To Install \.{WEAVE}}
$$\vbox{\halign{#\quad\hfill⊗#\hfill\cr
1.⊗Copy \.{WEAVE.WEB} and \.{WEAVE.CH} from tape.\cr
2.⊗Modify \.{WEAVE.CH} to allow for your particular system dependencies.\cr
3.⊗Check \.{system dependencies} in index of hard-copy report for other places.\cr
4.⊗Run \.{TANGLE} on \.{WEAVE.WEB} and \.{WEAVE.CH} to produce \.{WEAVE.PAS}.\cr
5.⊗Compile and run \.{WEAVE} on \.{WEAVE.WEB} and your \.{WEAVE.CH}.\cr
6.⊗Run \.{WEAVE} on \.{TANGLE.WEB} and your \.{TANGLE.CH}.\cr
7.⊗Run \TEX\ on \.{TANGLE.TEX} and on \.{WEAVE.TEX}.\cr
8.⊗Your individualized documentation is now complete.\cr}}$$
\vfill
\end